/* 
需求：
  复制[资料]文件夹下的[笑看风云.mp4]
*/
// 引入fs模块
const fs = require("fs");
const process = require("process");

// 方式一 readFile + writeFile
// 读取文件的所有内容 (将读取到的内容全部保存到内存中,占用内存过大)
let data = fs.readFileSync("./资料/笑看风云.mp4");

// 将读取到的内容写入文件中
fs.writeFileSync("./资料/笑看风云2.mp4", data);
console.log(process.memoryUsage()); // 查看内存占用
// rss 110710784字节  105MB

// 方式二 createReadStream + createWriteStream
// 创建一个读取流对象
const rs = fs.createReadStream("./资料/笑看风云.mp4");
// 创建一个写入流对象
const ws = fs.createWriteStream("./资料/笑看风云3.mp4");

// 绑定 data 事件
rs.on("data", (chunk) => {
  // 理想情况下每次只读取64字节的数据
  // 将读取到的数据写入到写入流中
  ws.write(chunk);
});

// end 事件 表示读取完毕
rs.on("end", () => {
  console.log("读取完成");
  console.log(process.memoryUsage()); // 查看内存占用
  // rss 43106304 => 40.7MB
});

// 方式三 管道流
rs.pipe(ws);